<?php
class PagosController extends AppController {

	var $name = 'Pagos';
	var $uses = array('Pago','User','EquiposOperativo','UsersEquiposOperativo','Grupo','Ciclo','Zona');
	var $helpers = array('Access','Xls');

	function sesion_activa(){
		$usuario_activo=$this->Access->getMy('username');
		//Verificacion de sesion del sistema
		if(!$usuario_activo){
			$this->Session->setFlash(__('Por favor inicie sesion', true));
			$this->redirect(array('controller'=>'users','action' => 'login'));
		}
	}
	
	/**
	 * Listado de los Equipos Operativos
	 */
	function equipos(){
		//$this->sesion_activa();
		$equipos = $this->EquiposOperativo->find('list');	
		$equiposOperativos = array();
		$i=0;
		foreach ($equipos as $equipo):
			$eq = $this->EquiposOperativo->read(null,$equipo);
			$zona = $this->EquiposOperativo->Zona->Municipio->read(null,$eq['Zona']['municipio_id']);
			$equiposOperativos[$i]['equipo']=$equipo;
			$equiposOperativos[$i]['nombre']=$zona['Municipio']['nombre'];		
			$i++;
		endforeach;
		//die(var_dump($equiposOperativos))	;
		$this->set(compact('equiposOperativos'));
	}
	
	/**
	 * Listado de los Equipos Operativos
	 */
	function equipos_informes(){
		//$this->sesion_activa();
		$equipos = $this->EquiposOperativo->find('list');
		$equiposOperativos = array();
		$i=0;
		foreach ($equipos as $equipo):
		$eq = $this->EquiposOperativo->read(null,$equipo);
		$zona = $this->EquiposOperativo->Zona->Municipio->read(null,$eq['Zona']['municipio_id']);
		$equiposOperativos[$i]['equipo']=$equipo;
		$equiposOperativos[$i]['nombre']=$zona['Municipio']['nombre'];
		$i++;
		endforeach;
		//die(var_dump($equiposOperativos))	;
		$this->set(compact('equiposOperativos'));
	}
	
	
	function index($equipo = null, $nombre_equipo = null, $contrato = null) {
		$this->sesion_activa();			
		
		$buscador=false;
		if(!empty($this->data)){			

			$valor_buscado = $this->data['Pago']['nombre'];
			$buscador =	(empty($valor_buscado))? false : true;		
			$equipo = $this->data['Pago']['equipo'];
			$nombre_equipo = $this->data['Pago']['nombre_equipo'];
			$contrato = $this->data['Pago']['contrato'];
			$nombre_contrato = $this->data['Pago']['nombre_contrato'];
						
		}
		if($buscador){
			$usuarios = $this->UsersEquiposOperativo->find('all',array('conditions'=>array('UsersEquiposOperativo.equipos_operativo_id'=>$equipo,'UsersEquiposOperativo.group_id'=>4)));
		}
		else{
			$usuarios = $this->paginate('UsersEquiposOperativo',
				array('UsersEquiposOperativo.equipos_operativo_id'=>$equipo,'UsersEquiposOperativo.group_id'=>4));
			
		}
		$facilitadores;
		foreach ($usuarios as &$facilitador):
		
		
			if($facilitador['User']['estado']=='Activo'){
				$grupos = array();
				if($buscador){
					if(stripos($facilitador['User']['nombre_completo'], $valor_buscado) !== FALSE){
						$grupos = $this->Pago->Grupo->find('all',array('conditions'=>array('Grupo.user_id'=>$facilitador['User']['id'],
								'Grupo.contrato_id'=>$contrato)));
					}
				}else{
					$grupos = $this->Pago->Grupo->find('all',array('conditions'=>array('Grupo.user_id'=>$facilitador['User']['id'],
							'Grupo.contrato_id'=>$contrato)));
				}					
				/*
				$grupos = $this->Pago->Grupo->find('all',array('conditions'=>array('Grupo.user_id'=>$facilitador['User']['id'], 
													'Grupo.contrato_id'=>$contrato)));
				*/
				$nombre_contrato = $this->Pago->Grupo->Contrato->read(null, $contrato);
				$nombre_contrato = $nombre_contrato['Contrato']['nombre']; 
				if(count($grupos)>0){
					foreach ($grupos as &$grupo):				
						$pagos = "<strong style='color:#b30101;'>P1: </strong>".$grupo['Pago'][0]['estado_1'];
						$pagos = $pagos. ", <strong style='color:#b30101;'>P2: </strong>".$grupo['Pago'][0]['estado_2'];
						$pagos = $pagos. ", <strong style='color:#b30101;'>P3: </strong>".$grupo['Pago'][0]['estado_3'];
						$grupo['pago'] = $pagos;
					endforeach;								
					$facilitador['grupos'] = $grupos;				
					$facilitadores[]=$facilitador;
				}
			}					
		endforeach;
			
		$this->set(compact('facilitadores','equipo','nombre_equipo', 'contrato', 'nombre_contrato', 'buscador'));
	}

	
	function index_informes($equipo = null, $nombre_equipo = null, $contrato = null) {
		$this->sesion_activa();
	
		$buscador=false;
		if(!empty($this->data)){
	
			$valor_buscado = $this->data['Pago']['nombre'];
			$buscador =	(empty($valor_buscado))? false : true;
			$equipo = $this->data['Pago']['equipo'];
			$nombre_equipo = $this->data['Pago']['nombre_equipo'];
			$contrato = $this->data['Pago']['contrato'];
			$nombre_contrato = $this->data['Pago']['nombre_contrato'];
	
		}
		if($buscador){
			$usuarios = $this->UsersEquiposOperativo->find('all',array('conditions'=>array('UsersEquiposOperativo.equipos_operativo_id'=>$equipo,'UsersEquiposOperativo.group_id'=>4)));
		}
		else{
			$usuarios = $this->paginate('UsersEquiposOperativo',
					array('UsersEquiposOperativo.equipos_operativo_id'=>$equipo,'UsersEquiposOperativo.group_id'=>4));
				
		}
		$facilitadores;
		foreach ($usuarios as &$facilitador):
	
	
		if($facilitador['User']['estado']=='Activo'){
			$grupos = array();
			if($buscador){
				if(stripos($facilitador['User']['nombre_completo'], $valor_buscado) !== FALSE){
					$grupos = $this->Pago->Grupo->find('all',array('conditions'=>array('Grupo.user_id'=>$facilitador['User']['id'],
							'Grupo.contrato_id'=>$contrato)));
				}
			}else{
				$grupos = $this->Pago->Grupo->find('all',array('conditions'=>array('Grupo.user_id'=>$facilitador['User']['id'],
						'Grupo.contrato_id'=>$contrato)));
			}
			$nombre_contrato = $this->Pago->Grupo->Contrato->read(null, $contrato);
			$nombre_contrato = $nombre_contrato['Contrato']['nombre'];
			if(count($grupos)>0){
				$facilitador['grupos'] = $grupos;
				$facilitadores[]=$facilitador;
			}
		}
		endforeach;
			
		$this->set(compact('facilitadores','equipo','nombre_equipo', 'contrato', 'nombre_contrato', 'buscador'));
	}
	
	
	function colilla12($pago=null, $grupo=null, $equipo=null, $nombre_equipo=null){
		$info_grupo = $this->Pago->Grupo->read(null,$grupo);
		$nombre_contrato = $info_grupo['Contrato']['nombre'];
		$facilitador = $info_grupo['User'];
		$info_grupo = $info_grupo['Grupo'];
		$iem = $this->Pago->Grupo->Iem->read(null,$info_grupo['iem_id']);
		$sede = $this->Pago->Grupo->Iem->Sedesiem->read(null,$info_grupo['sedesiem_id']);
		$iem = $iem['Iem'];
		$sede = $sede['Sedesiem'];
				
		$municipio = $this->Pago->Grupo->Municipio->read(null,$info_grupo['municipio_id']);
		$info_grupo['municipio'] = $municipio['Municipio']['nombre'];
		$this->set(compact('pago','info_grupo','facilitador','iem','sede', 'equipo', 'nombre_equipo', 'nombre_contrato'));
	}	
	
	function promocion_informe($grupo=null, $equipo=null, $nombre_equipo=null){
		$this->sesion_activa();
		
		$info_grupo = $this->Pago->Grupo->read(null,$grupo);
		//die(var_dump($info_grupo));
		$datos_promocion_informe = array();
		$datos_promocion_informe['ciclo_id'] = $info_grupo['Grupo']['ciclo_id'];
		$datos_promocion_informe['entidad_territorial'] = $info_grupo['EquiposOperativo']['zona_id'];
		$datos_promocion_informe['nombre_entidad'] = $info_grupo['Municipio']['nombre'];
		$datos_promocion_informe['nombre_facilitador'] = $info_grupo['User']['nombre_completo'];
		$datos_promocion_informe['institucion'] = $info_grupo['Iem']['nombre'];  
		$datos_promocion_informe['sede_insticion'] = $info_grupo['Sedesiem']['nombre'];
		$datos_promocion_informe['participantes'] = $info_grupo['Participante'];
		//die(var_dump($datos_promocion_informe));
		
		$municipio_id = $this->Zona->find('all',array('conditions'=>array('Zona.id'=>$info_grupo['EquiposOperativo']['zona_id'])));
		$datos_promocion_informe['Nombre_Zona'] = $municipio_id[0]['Municipio']['nombre'];
		//die(var_dump($datos_promocion_informe));
		$this->set(compact('user','datos_promocion_informe'));
	} 
	
	
	
	/**
	 * Pagos a facilitador
	 */
	function pago_facilitador($grupo=null, $equipo=null, $nombre_equipo = null){
		$this->sesion_activa();
		
		//Datos del Pago
		if (!$grupo && empty($this->data)) {
			$this->Session->setFlash(__('Informacion Errada', true));
			$this->redirect(array('action' => 'equipos'));
		}
		if (!empty($this->data)) {
			$f1 = $this->data['Pago']['fecha_contabilidad_1']['year']."-".$this->data['Pago']['fecha_contabilidad_1']['month']."-".$this->data['Pago']['fecha_contabilidad_1']['day'];
					
			if($this->data['Pago']['estado_1']=='Pendiente' OR $this->data['Pago']['estado_1']=='Incompleto')
				$this->data['Pago']['fecha_pago_1']= '0000-00-00';
			if($f1>date("Y-m-d"))
				$this->data['Pago']['fecha_contabilidad_1']= '0000-00-00';
			
			if(isset($this->data['Pago']['estado_2'])){
				if($this->data['Pago']['estado_2']=='Pendiente' OR $this->data['Pago']['estado_2']=='Incompleto')
					$this->data['Pago']['fecha_pago_2']= '0000-00-00';
				$f2 = $this->data['Pago']['fecha_contabilidad_2']['year']."-".$this->data['Pago']['fecha_contabilidad_2']['month']."-".$this->data['Pago']['fecha_contabilidad_2']['day'];
				if($f2>date("Y-m-d"))
					$this->data['Pago']['fecha_contabilidad_2']= '0000-00-00';
			}
			if(isset($this->data['Pago']['estado_3'])){
				if($this->data['Pago']['estado_3']=='Pendiente' OR $this->data['Pago']['estado_3']=='Incompleto')
					$this->data['Pago']['fecha_pago_3']= '0000-00-00';
				$f3 = $this->data['Pago']['fecha_contabilidad_3']['year']."-".$this->data['Pago']['fecha_contabilidad_3']['month']."-".$this->data['Pago']['fecha_contabilidad_3']['day'];
				if($f3>date("Y-m-d"))
					$this->data['Pago']['fecha_contabilidad_3']= '0000-00-00';
			}
			
						
			if ($this->Pago->save($this->data)) {
				$this->Session->setFlash(__('Pago Actualizado', true));
				$this->redirect(array('action' => 'index',$this->data['Pago']['equipo'], $this->data['Pago']['nombre_equipo'],$this->data['Pago']['contrato']));
			} else {
				$this->Session->setFlash(__('The pago could not be saved. Please, try again.', true));
			}
		}
		
		
		$info_grupo = $this->Pago->Grupo->read(null,$grupo);
		$nombre_contrato = $info_grupo['Contrato']['nombre'];
		$facilitador = $info_grupo['User'];
		$info_grupo = $info_grupo['Grupo'];
		$iem = $this->Pago->Grupo->Iem->read(null,$info_grupo['iem_id']);
		$sede = $this->Pago->Grupo->Iem->Sedesiem->read(null,$info_grupo['sedesiem_id']);
		$iem = $iem['Iem'];
		$sede = $sede['Sedesiem'];
		$pago = $this->Pago->find('all',array('conditions'=>array('Pago.grupo_id'=>$grupo)));
		$pago = $pago[0]['Pago'];
		
		$municipio = $this->Pago->Grupo->Municipio->read(null,$info_grupo['municipio_id']);
		$info_grupo['municipio'] = $municipio['Municipio']['nombre'];		
		$this->set(compact('info_grupo','facilitador','iem','sede','pago','equipo', 'nombre_equipo', 'nombre_contrato'));
	}
	
	function view($id = null) {
		$this->sesion_activa();
		if (!$id) {
			$this->Session->setFlash(__('Invalid pago', true));
			$this->redirect(array('action' => 'index'));
		}
		$this->set('pago', $this->Pago->read(null, $id));
	}

	function add() {
		$this->sesion_activa();
		if (!empty($this->data)) {
			$this->Pago->create();
			if ($this->Pago->save($this->data)) {
				$this->Session->setFlash(__('The pago has been saved', true));
				$this->redirect(array('action' => 'index'));
			} else {
				$this->Session->setFlash(__('The pago could not be saved. Please, try again.', true));
			}
		}
		$users = $this->Pago->User->find('list');
		$grupos = $this->Pago->Grupo->find('list');
		$municipios = $this->Pago->Municipio->find('list');
		$this->set(compact('users', 'grupos', 'municipios'));
	}

	function edit($id = null) {
		$this->sesion_activa();
		if (!$id && empty($this->data)) {
			$this->Session->setFlash(__('Invalid pago', true));
			$this->redirect(array('action' => 'index'));
		}
		if (!empty($this->data)) {
			if ($this->Pago->save($this->data)) {
				$this->Session->setFlash(__('The pago has been saved', true));
				$this->redirect(array('action' => 'index'));
			} else {
				$this->Session->setFlash(__('The pago could not be saved. Please, try again.', true));
			}
		}
		if (empty($this->data)) {
			$this->data = $this->Pago->read(null, $id);
		}
		$users = $this->Pago->User->find('list');
		$grupos = $this->Pago->Grupo->find('list');
		$municipios = $this->Pago->Municipio->find('list');
		$this->set(compact('users', 'grupos', 'municipios'));
	}

	function delete($id = null) {
		$this->sesion_activa();
		if (!$id) {
			$this->Session->setFlash(__('Invalid id for pago', true));
			$this->redirect(array('action'=>'index'));
		}
		if ($this->Pago->delete($id)) {
			$this->Session->setFlash(__('Pago deleted', true));
			$this->redirect(array('action'=>'index'));
		}
		$this->Session->setFlash(__('Pago was not deleted', true));
		$this->redirect(array('action' => 'index'));
	}
	
	function entrega_contabilidad(){		
		$this->sesion_activa();
		if (!empty($this->data)){			
			$fi = $this->data['Pago']['fecha_inicial']['year']."-".$this->data['Pago']['fecha_inicial']['month']."-".$this->data['Pago']['fecha_inicial']['day'];
			$ff = $this->data['Pago']['fecha_final']['year']."-".$this->data['Pago']['fecha_final']['month']."-".$this->data['Pago']['fecha_final']['day'];
			$pago_1 = ($this->data['Pago']['pago_1']==1)?"Si":"No";
			$pago_2 = ($this->data['Pago']['pago_2']==1)?"Si":"No";
			$pago_3 = ($this->data['Pago']['pago_3']==1)?"Si":"No";
			$this->redirect(array('action' => 'entrega_contabilidad_informe',$fi, $ff, $pago_1, $pago_2, $pago_3));
		}
		
	}
	
	function entrega_contabilidad_informe($fi = null, $ff = null, $pago_1 = null, $pago_2 = null, $pago_3 = null){
				
		if($pago_1=="Si" && $pago_2 == "Si" && $pago_3 == "Si"){	
			
			$pagos = $this->Pago->find('all',array('conditions'=>array(
						'OR'=>array('Pago.fecha_contabilidad_2 between ? and ?' => array($fi, $ff),
									'Pago.fecha_contabilidad_1 between ? and ?' => array($fi, $ff),
									'Pago.fecha_contabilidad_3 between ? and ?' => array($fi, $ff) ))));
			
		}else if($pago_1 == "Si" && $pago_2 == "Si" && $pago_3 == "No"){
			
			$pagos = $this->Pago->find('all',array('conditions'=>array(
					'OR'=>array('Pago.fecha_contabilidad_2 between ? and ?' => array($fi, $ff),
							'Pago.fecha_contabilidad_1 between ? and ?' => array($fi, $ff) ))));
			
		}else if($pago_1 == "Si" && $pago_3 == "Si" && $pago_2 == "No"){
			
			$pagos = $this->Pago->find('all',array('conditions'=>array(
					'OR'=>array('Pago.fecha_contabilidad_1 between ? and ?' => array($fi, $ff),
							'Pago.fecha_contabilidad_3 between ? and ?' => array($fi, $ff) ))));
			
		}else if($pago_2 == "Si" && $pago_3 == "Si" && $pago_1 == "No"){
			
			$pagos = $this->Pago->find('all',array('conditions'=>array(
					'OR'=>array('Pago.fecha_contabilidad_2 between ? and ?' => array($fi, $ff),
								'Pago.fecha_contabilidad_3 between ? and ?' => array($fi, $ff) ))));
			
		}else if($pago_1 == "Si" && $pago_2 == "No" && $pago_3 == "No"){
			
			$pagos = $this->Pago->find('all',array('conditions'=>array(					
							'Pago.fecha_contabilidad_1 between ? and ?' => array($fi, $ff) )));
			
		}else if($pago_2  == "Si" && $pago_1  == "No"  && $pago_3 == "No"){
			
			$pagos = $this->Pago->find('all',array('conditions'=>array(					
							'Pago.fecha_contabilidad_2 between ? and ?' => array($fi, $ff) )));
			
		}else if($pago_3 == "Si" && $pago_2 == "No" && $pago_1 == "No"){
			
			$pagos = $this->Pago->find('all',array('conditions'=>array(					
							'Pago.fecha_contabilidad_3 between ? and ?' => array($fi, $ff) )));
			
		}else if($pago_1 == "No" && $pago_2 == "No" && $pago_3 == "No"){
			
			$pagos = $this->Pago->find('all',array('conditions'=>array(
					'OR'=>array('Pago.fecha_contabilidad_2 between ? and ?' => array($fi, $ff),
							'Pago.fecha_contabilidad_1 between ? and ?' => array($fi, $ff),
							'Pago.fecha_contabilidad_3 between ? and ?' => array($fi, $ff) ))));
			
		}
		
		$this->set(compact('pagos','fi','ff'));
	}
	
	function relacion_pagos_contabilidad(){
		$this->sesion_activa();
		if (!empty($this->data)){
			$fi = $this->data['Pago']['fecha_inicial']['year']."-".$this->data['Pago']['fecha_inicial']['month']."-".$this->data['Pago']['fecha_inicial']['day'];
			$ff = $this->data['Pago']['fecha_final']['year']."-".$this->data['Pago']['fecha_final']['month']."-".$this->data['Pago']['fecha_final']['day'];
			$pago_1 = ($this->data['Pago']['pago_1']==1)?"Si":"No";
			$pago_2 = ($this->data['Pago']['pago_2']==1)?"Si":"No";
			$pago_3 = ($this->data['Pago']['pago_3']==1)?"Si":"No";
			$this->redirect(array('action' => 'relacion_pagos_contabilidad_informe',$fi, $ff, $pago_1, $pago_2, $pago_3));
		}
	
	}
	
	function relacion_pagos_contabilidad_informe($fi = null, $ff = null, $pago_1 = null, $pago_2 = null, $pago_3 = null){
	
		$users; 
		$gnorte 		= $this->gruposActivos(7, $users, count($users));
		$gcucuta 		= $this->gruposActivos(6, $users, count($users));
		$gsantander 	= $this->gruposActivos(3, $users, count($users)); 
		$gbarranca 		= $this->gruposActivos(4, $users, count($users));
		$gbucaramanga 	=  $this->gruposActivos(5, $users, count($users));
		
		if($pago_1=="Si" && $pago_2 == "Si" && $pago_3 == "Si"){				
			$pagos = $this->Pago->find('all',array('conditions'=>array(
					'OR'=>array('Pago.fecha_pago_2 between ? and ?' => array($fi, $ff),
							'Pago.fecha_pago_1 between ? and ?' => array($fi, $ff),
							'Pago.fecha_pago_3 between ? and ?' => array($fi, $ff) ),
					'NOT'=>array('Pago.user_id'=>$users))));
		}else if($pago_1 == "Si" && $pago_2 == "Si" && $pago_3 == "No"){
			$pagos = $this->Pago->find('all',array('conditions'=>array(
					'OR'=>array('Pago.fecha_pago_2 between ? and ?' => array($fi, $ff),
							'Pago.fecha_pago_1 between ? and ?' => array($fi, $ff) ),
					'NOT'=>array('Pago.user_id'=>$users))));
		}else if($pago_1 == "Si" && $pago_3 == "Si" && $pago_2 == "No"){
			$pagos = $this->Pago->find('all',array('conditions'=>array(
					'OR'=>array('Pago.fecha_pago_1 between ? and ?' => array($fi, $ff),
							'Pago.fecha_pago_3 between ? and ?' => array($fi, $ff) ),
					'NOT'=>array('Pago.user_id'=>$users))));
		}else if($pago_2 == "Si" && $pago_3 == "Si" && $pago_1 == "No"){
			$pagos = $this->Pago->find('all',array('conditions'=>array(
					'OR'=>array('Pago.fecha_pago_2 between ? and ?' => array($fi, $ff),
							'Pago.fecha_pago_3 between ? and ?' => array($fi, $ff) ),
					'NOT'=>array('Pago.user_id'=>$users))));
		}else if($pago_1 == "Si" && $pago_2 == "No" && $pago_3 == "No"){
			$pagos = $this->Pago->find('all',array('conditions'=>array(
					'Pago.fecha_pago_1 between ? and ?' => array($fi, $ff) ),
					'NOT'=>array('Pago.user_id'=>$users)));
		}else if($pago_2  == "Si" && $pago_1  == "No"  && $pago_3 == "No"){
			$pagos = $this->Pago->find('all',array('conditions'=>array(
					'Pago.fecha_pago_2 between ? and ?' => array($fi, $ff) ), 
					'NOT'=>array('Pago.user_id'=>$users)));
		}else if($pago_3 == "Si" && $pago_2 == "No" && $pago_1 == "No"){
			$pagos = $this->Pago->find('all',array('conditions'=>array(
					'Pago.fecha_pago_3 between ? and ?' => array($fi, $ff) ), 
					'NOT'=>array('Pago.user_id'=>$users)));
		}else if($pago_1 == "No" && $pago_2 == "No" && $pago_3 == "No"){
			$pagos = $this->Pago->find('all',array('conditions'=>array(
					'OR'=>array('Pago.fecha_pago_2 between ? and ?' => array($fi, $ff),
							'Pago.fecha_pago_1 between ? and ?' => array($fi, $ff),
							'Pago.fecha_pago_3 between ? and ?' => array($fi, $ff) ),
					'NOT'=>array('Pago.user_id'=>$users))));
		}
		

		$this->set(compact('pagos','fi','ff', 'gnorte', 'gsantander', 'gcucuta', 'gbarranca', 'gbucaramanga'));
	}
	
	function gruposActivos ($equipo, &$users, $longitud){
		$grupos = $this->Pago->Grupo->find('all',array('conditions'=>array('Grupo.equipos_operativo_id'=>$equipo)));
		
		$numero =0;
		$longitud;		
		foreach ($grupos as $grupo){
			
			if($grupo['User']['estado']=='Activo'){
				$numero++;
			}else{				
				$users[$longitud]=$grupo['User']['id'];
				$longitud++;
			}		
		}
		$users = array_unique($users);
		return $numero;		
	}	
}
